function SuperClass(id) {
	this.books = ['JavaScript设计模式', '红宝书']
	this.id = id
}
SuperClass.prototype.showBooks = function () {
	console.log(this.books)
}

function SubClass(id) {
	SuperClass.call(this, id)
}

let s1 = new SubClass(10)
let s2 = new SubClass(10)

console.log('s1', s1)
console.log(s1.books) //['JavaScript设计模式', '红宝书']
s1.books.push('hello world')
// s1.showBooks()
console.log('s2', s2)
console.log(s2.books) //['JavaScript设计模式', '红宝书', 'hello world']

/**
 *  由于js函数提供了 call apply bind 三种非常好用的改变this指向的方法，所以我们是可以简单
 *  改造一下 继承 的操作的
 *    原理是通过改变this指向，将 继承类 中this改变为 实例化对象的this
 *    以此来实现一种  复制继承的 方式！
 * 	简单的说 这种继承方式是通过 子类在实例化的时候在子类的构造函数的环境中执行了一次父类的构造函数
 *
 * 	缺点也是十分的明显，就是我们无法使用 父类的 prototype 上的方法
 */
